using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Xna.Framework;

namespace XnaDevRu.BulletX
{
	public class PointCollector : DiscreteCollisionDetectorInterface.Result
	{
		private Vector3 _normalOnBInWorld;
		private Vector3 _pointInWorld;
		private float _distance; //negative means penetration
		private bool _hasResult;

		public PointCollector()
		{
			_distance = 1e30f;
			_hasResult = false;
		}

		public Vector3 NormalOnBInWorld { get { return _normalOnBInWorld; } }
		public Vector3 PointInWorld { get { return _pointInWorld; } }
		public float Distance { get { return _distance; } }
		public bool HasResult { get { return _hasResult; } }

		public override void SetShapeIdentifiers(int partIdA, int indexA, int partIdB, int indexB)
		{
			//??
		}

		public override void AddContactPoint(Vector3 normalOnBInWorld, Vector3 pointInWorld, float depth)
		{
			if (depth < _distance)
			{
				_hasResult = true;
				_normalOnBInWorld = normalOnBInWorld;
				_pointInWorld = pointInWorld;
				//negative means penetration
				_distance = depth;
			}
		}
	}
}
